#include "event_reupload.h"
#include "signal_catch.h"
#include "common_opr_all.h"
#include "data_build.h"

using namespace DcAdr;
using namespace std;

/*事件补发业务。主要是没网条件下，缓存事件信息到文件里，定时器周期发送缓存的事件信息。
等此事件信息的文件上传成功后，删除文件中的此项。
    
    目前只支持FC011,且写死的。
*/

EventReupload::EventReupload()
{

}

EventReupload::~EventReupload()
{
}


EventReupload &EventReupload::getInstance()
{
    static EventReupload adr;
    return adr;
}

void EventReupload::writeJsonString(std::string jsonStr)
{
    std::fstream out(global_data::g_event_reupload_path, std::fstream::trunc | std::fstream::in | std::fstream::out);
    if (!out)
    {
        Log_ERROR("zjs_tmp_dianjian;get local file error!");
        return;
    }
    out.write(jsonStr.c_str(), jsonStr.size());
    out.close();
}

void EventReupload::readEvtAndSend()
{
    if (0 != access(global_data::g_event_reupload_path.c_str(), F_OK))
    {
        return;
    }

    string evtInfo;
    CommonOprSystem::readFileAllOnce(global_data::g_event_reupload_path, evtInfo);
    if (evtInfo.size() > 0)
    {
        DataBuild::mqttsend(evtInfo);
    }
}    

//事件补传的事件文件上传成功（目前只有fc011）,删除此配置文件
void EventReupload::deletEvtReupFile()
{
    if (0 != access(global_data::g_event_reupload_path.c_str(), F_OK))
    {
        return;
    }

    auto ret = remove(global_data::g_event_reupload_path.c_str());
    Log_Info("remove:{} ret:{};",global_data::g_event_reupload_path, ret);
}    


#if 0
//后面拓展成支持多个事假信息补传
void EventReupload::writeEvtInfo(std::string evtInfo)
{
    /*
        [
            {
                "eventInfo": "113",
                "fileSuc": true,
                "ts": 1719474958818,
            }
        ]

        {
            "eventInfo": "113",
            "fileSuc": true
        }

    */


    Json::Value root;
    root["eventInfo"] = evtInfo; 
    root["fileSuc"] = false; 

    Json::FastWriter writer;
    std::string writeStr = writer.write(root);

    Log_Info("after wirte: {}", writeStr);

    //写json文件
    writeJsonString(writeStr);

    return;
}
#endif